﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;

namespace Plazos
{
    public partial class FormMostrarPorCurso : Form
    {
        public FormMostrarPorCurso(int sic)
        {
            InitializeComponent();
            this.si = sic;
        }
        int si;
        private void FormMostrarPorCurso_Load(object sender, EventArgs e)
        {
            Curso cur = new Curso();
            List<Curso> cursos = cur.getCursos();
            List<DateTime> ordenar = new List<DateTime>();
            String s = "";
            int p;
            foreach (Curso c in cursos)
            {
                if (c.Sic == this.si)
                {

                    p = cur.porc(c.FechaInicioLect, c.CorrerLista);
                    //Console.WriteLine("sic: " + c.Sic + ">");

                    s = c.Sic + "       " + c.Horasxdia + "     " + "Horas por dia  ";
                    listMostrarPorCurso.Items.Add(s);
                    
                    s = c.Sic + "       " + c.Horas + "     " + "Horas totales del curso ";
                    listMostrarPorCurso.Items.Add(s);

                    s = c.Sic + "       " + c.Dias + "     " + "Días de duración del curso ";
                    listMostrarPorCurso.Items.Add(s);

                    s = c.Sic + "       " + p+ "     " + "20 % del curso  ";
                    listMostrarPorCurso.Items.Add(s);

                    ordenar.Add(Convert.ToDateTime(c.FechaInicioLect));

                    ordenar.Add(Convert.ToDateTime(c.FechaTermLect));

                    ordenar.Add(Convert.ToDateTime(c.Colocar));

                    ordenar.Add(Convert.ToDateTime(c.FechaInicioPractica));

                    ordenar.Add(Convert.ToDateTime(c.FechaPractica));

                    ordenar.Add(Convert.ToDateTime(c.Relatores));

                    ordenar.Add(Convert.ToDateTime(c.Supervision50));

                    ordenar.Add(Convert.ToDateTime(c.Encuesta75));

                    ordenar.Add(Convert.ToDateTime(c.Publicar));

                    ordenar.Add(Convert.ToDateTime(c.FechaInicioLect));

                    ordenar.Add(Convert.ToDateTime(c.AcuerdoOperativo));

                    ordenar.Add(Convert.ToDateTime(c.F1));

                    ordenar.Add(Convert.ToDateTime(c.F1C));

                    ordenar.Add(Convert.ToDateTime(c.IngresoSence));

                    ordenar.Add(Convert.ToDateTime(c.F2));

                    ordenar.Add(Convert.ToDateTime(c.F2C));

                    ordenar.Add(Convert.ToDateTime(c.F3));

                    ordenar.Add(Convert.ToDateTime(c.Seguimiento));

                    ordenar.Add(Convert.ToDateTime(c.IngSeguimiento1));

                    ordenar.Add(Convert.ToDateTime(c.IngSeguimiento2));

                    ordenar.Add(Convert.ToDateTime(c.F4));

                    ordenar.Add(Convert.ToDateTime(c.Certificado));

                }

            }

            

            SortAscending(ordenar);
            List<DateTime> sinRepetidos = ordenar.Distinct().ToList();
            List<String> fechas = new List<String>();
            String fe;
            foreach (DateTime f in sinRepetidos)
            {
                fe = Convert.ToString(f);
                fe = fe.Substring(0, 10);
                fechas.Add(fe);

            }
            foreach (String a in fechas)
            {
                foreach (Curso c in cursos)
                {
                    if (c.Sic == this.si)
                    {
                        if (a == c.FechaInicioLect)
                        {
                            s = "\n" + c.Sic + "       " + c.FechaInicioLect + "     " + "Inicio Lectivo ";
                            listMostrarPorCurso.Items.Add(s);
                        }
                        if (a == c.FechaTermLect)
                        {
                            s = c.Sic + "       " + c.FechaTermLect + "     " + "Término Lectivo ";
                            listMostrarPorCurso.Items.Add(s);
                        }

                        if (a == c.Colocar)
                        {
                            s = c.Sic + "       " + c.Colocar + "     " + "ültimo día para colocar alumnos en práctica ";
                            listMostrarPorCurso.Items.Add(s);
                        }


                        if (c.Modificar == "t")
                        {
                            if (a == c.FechaInicioPractica)
                            {
                                s = c.Sic + "       " + c.FechaInicioPractica + "     " + "Fecha primer alumno en práctica ";
                                listMostrarPorCurso.Items.Add(s);
                            }

                            if (a == c.FechaPractica)
                            {
                                s = c.Sic + "       " + c.FechaPractica + "     " + "Fecha último alumno en práctica ";
                                listMostrarPorCurso.Items.Add(s);
                            }
                        }
                        

                        if (a == c.Relatores)
                        {
                            s = c.Sic + "       " + c.Relatores + "     " + "Ingreso de los relatores ";
                            listMostrarPorCurso.Items.Add(s);
                        }

                        if (a == c.Supervision50)
                        {
                            s = c.Sic + "       " + c.Supervision50 + "     " + "Supervisión que se realizará al 50% del curso ";
                            listMostrarPorCurso.Items.Add(s);
                        }

                        if (a == c.Encuesta75)
                        {
                            s = c.Sic + "       " + c.Encuesta75 + "     " + "Encuesta que se debe realizar al 75% del curso ";
                            listMostrarPorCurso.Items.Add(s);
                        }

                        if (a == c.Publicar)
                        {
                            s = c.Sic + "       " + c.Publicar + "     " + "Enviar mail  a la coordinación nacional del programa los horarios y lugares de ejecución de los cursos a fin de que éstos sean publicados en el portal de postulación ";
                            listMostrarPorCurso.Items.Add(s);
                        }

                        if (a == c.CorrerLista)
                        {
                            s = c.Sic + "       " + c.CorrerLista + "     " + "Correr lista al 20% del curso ";
                            listMostrarPorCurso.Items.Add(s);
                        }

                        if (a == c.AcuerdoOperativo)
                        {
                            s = c.Sic + "       " + c.AcuerdoOperativo + "     " + "Enviar acuerdo operativo ";
                            listMostrarPorCurso.Items.Add(s);
                        }

                        if (a == c.F1)
                        {
                            s = c.Sic + "       " + c.F1 + "     " + "F1  ";
                            listMostrarPorCurso.Items.Add(s);
                        }

                        if (a == c.F1C)
                        {
                            s = c.Sic + "       " + c.F1C + "     " + "ültimo plazo para enviar el F1C ";
                            listMostrarPorCurso.Items.Add(s);
                        }

                        if (a == c.IngresoSence)
                        {
                            s = c.Sic + "       " + c.IngresoSence + "     " + "Ingresar formulario resumen de la fase 1, registrando la situación final de los alumnos ";
                            listMostrarPorCurso.Items.Add(s);
                        }
                        if (c.Modificar == "t")
                        {
                            if (a == c.F2)
                            {
                                s = c.Sic + "       " + c.F2 + "     " + "F2 ";
                                listMostrarPorCurso.Items.Add(s);
                            }

                            if (a == c.F2C)
                            {
                                s = c.Sic + "       " + c.F2C + "     " + "F2C ";
                                listMostrarPorCurso.Items.Add(s);
                            }

                            if (a == c.F3)
                            {
                                s = c.Sic + "       " + c.F3 + "     " + "F3 ";
                                listMostrarPorCurso.Items.Add(s);
                            }

                            if (a == c.Seguimiento)
                            {
                                s = c.Sic + "       " + c.Seguimiento + "     " + "Seguimiento tecnico";
                                listMostrarPorCurso.Items.Add(s);
                            }
                            if (a == c.IngSeguimiento1)
                            {
                                s = c.Sic + "       " + c.IngSeguimiento1 + "     " + "Comienza el período para ingresar en el formulario dos 'registro de alumnos que comienzan la fase de seguimiento tecnico' ";
                                listMostrarPorCurso.Items.Add(s);
                            }
                            if (a == c.IngSeguimiento2)
                            {
                                s = c.Sic + "       " + c.IngSeguimiento2 + "     " + "Términa el período para ingresar en el formulario dos 'registro de alumnos que comienzan la fase de seguimiento tecnico' ";
                                listMostrarPorCurso.Items.Add(s);
                            }
                            if (a == c.F4)
                            {
                                s = c.Sic + "       " + c.F4 + "     " + "último día para ingresar el f4  'Resultado salida laboral' ";
                                listMostrarPorCurso.Items.Add(s);
                            }

                            if (a == c.Certificado)
                            {
                                s = c.Sic + "       " + c.Certificado + "     " + "Certificado ";
                                listMostrarPorCurso.Items.Add(s);
                            }
                        }
                    }
                }
            }

        }

        static List<DateTime> SortAscending(List<DateTime> list)
        {
            list.Sort((a, b) => a.CompareTo(b));
            return list;
        }

        private void buttonGuardar_Click(object sender, EventArgs e)
        {
            SaveFileDialog dlGuardar = new SaveFileDialog();
            dlGuardar.Title = "Selección de carpeta y fichero de " +
                "texto donde se guardará el log";
            dlGuardar.Filter = "Texto (*.txt)|*.txt|Todos los ficheros (*.*)|*.*";
            dlGuardar.DefaultExt = "txt";
            dlGuardar.FilterIndex = 1;
            dlGuardar.CheckFileExists = false;
            dlGuardar.OverwritePrompt = true;
            if (dlGuardar.ShowDialog() == DialogResult.OK)
            {
                try
                {
                    StreamWriter ficheroTexto = new StreamWriter(dlGuardar.FileName,
                        false, System.Text.Encoding.Default);
                    foreach (object item in listMostrarPorCurso.Items)
                    {
                        ficheroTexto.WriteLine(item.ToString());
                    }
                    ficheroTexto.Flush();
                    ficheroTexto.Close();
                    MessageBox.Show("Fichero de texto guardado correctamente.",
                        "Fichero guardado",
                        MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Error al guardar fichero de texto: " +
                        System.Environment.NewLine + System.Environment.NewLine +
                        ex.GetType().ToString() + System.Environment.NewLine +
                        ex.Message, "Error",
                        MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            } 
            
        }

    }
}
